package com.tbit.uqbike.webmanager.dao.log;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.tbit.config.datasource.DataSource;
import com.tbit.uqbike.object.pojo.RideRefundLog;
import com.tbit.uqbike.object.pojo.RideUserRefund;
import com.tbit.uqbike.object.pojo.dto.CommonDTO;
import com.tbit.uqbike.object.pojo.statistics.MonthDateType;
import org.apache.ibatis.annotations.Param;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Author HZW
 * @ClassName RideRefundLog
 * @Description
 * @date 2022/4/15 15:51
 * @Version 1.0
 */
@DS(DataSource.LOG)
public interface RideRefundLogDao {
    /**
     * 插入日志
     *
     * @param rideRefundLog 骑行退款记录
     * @return int
     */
    int insertLog(RideRefundLog rideRefundLog);

    /**
     * 根据时间去查询骑行订单退款记录
     *
     * @param map 地图
     * @return {@link List}<{@link Map}<{@link String}, {@link Object}>>
     */
    CommonDTO getRefundByTime(Map<String, Object> map);

    /**
     * 根据条件查询日志
     *
     * @param rideRefundLog
     * @return {@link List}<{@link RideRefundLog}>
     */
    RideRefundLog selectLog(RideRefundLog rideRefundLog);

    /**
     * 根据条件查询日志
     *
     * @param rideRefundLog
     * @return {@link List}<{@link RideRefundLog}>
     */
    List<RideRefundLog> selectLogList(RideRefundLog rideRefundLog);

    /**
     * 根据条件导出订单退款日志
     *
     * @param params 参数个数
     * @return {@link List}<{@link RideRefundLog}>
     */
    List<RideRefundLog> excel(Map<String, Object> params);

    /**
     * 查询骑行日志退款按日期
     *
     * @param params 参数个数
     * @return {@link List}<{@link MonthDateType}>
     */
    List<MonthDateType> getRideLogRefundByDate(Map<String, Object> params);

    /**
     * 获取时间内的退款记录
     *
     * @param params 参数个数
     * @return {@link List}<{@link CommonDTO}>
     */
    CommonDTO getRideLogRefundIncome(Map<String, Object> params);

    /**
     * 骑行订单退款表记录分布
     *
     * @param downloadDTO 。
     * @return 。
     */
    int orderRefundDistributionCount(String accountIds, Date startTime, Date endTime, Integer brandId);

    /**
     * @param accountIds
     * @param startTime
     * @param endTime
     * @param brandId
     * @return
     */
    List<RideUserRefund> selectOrderRefundDistribution(String accountIds, Date startTime, Date endTime, Integer brandId);

    /**
     * 查询骑行退款
     * @param orderNoList 订单编号
     */
    List<RideRefundLog> selectLogByOrderNos(@Param("orderNoList") List<String> orderNoList);
}
